package com.wzqj.agent.common.redis;


/**
 * 封装jedis通用的操作方法
 */
public interface CacheOper {
	
	/**
	 * Redis键（key）命令：
	 * 删除KEY值对应的VALUE
	 * @param keys
	 * @return
	 */
	public Long del(byte[] keys);
	
	/**
	 * Redis 字符串(String) 命令：
	 * 获取KEY对应的字节数组. 
	 * @param key
	 * @return
	 */
	public byte[] get(byte[] key);

	/**
	 * Redis 字符串(String) 命令：
	 * 向redis存放对象, 并设置缓存时间.
	 * @param key
	 * @param seconds 数据过期时间, 秒
	 * @param value 该对象的关联对象需全部实现Serializable
	 */
	void setex(byte[] key, int seconds, byte[] value);
	/**
	 * Redis 字符串(String) 命令：
	 * Redis Setnx（SET if Not eXists）
	 * 在指定的 key 不存在时，为 key 设置指定的值。
	 * @param key
	 * @param value
	 * @return
	 */
	long setnx(byte[] key, byte[] value);
	/**
	 * Redis键（key）命令：
	 * 返回 key的剩余过期时间(单位：秒)
	 * @Title: ttl 
	 * @Description:获取key的当前有效时间
	 * @param @param key
	 * @return long    返回该key的有效时间
	 * @throws
	 */
	Long ttl(byte[] key);
	
    /**
     * Redis键（key）命令：
     * 为指定key设置过期时间
     * @param key 
     * @param seconds 数据过期时间，单位秒
     * @return
     */
    public Long expire(final String key, final int seconds);
    /**
     * Redis键（key）命令：
     * 为指定key设置过期时间
     * @param key 
     * @param unixTime 数据过期时间，UNIX 时间戳(unix timestamp)
     * @return
     */
    public Long expireAt(final String key, final long unixTime);
    /**
     * Redis键（key）命令：
     * 检查给定 key 是否存在
     * @param key
     * @return
     */
    public Boolean exists(final String key) ;
}
